package com.pince.lifcycleliveav.pullPalyer

import android.view.Surface
import com.tencent.rtmp.TXLivePlayer

interface ILivePlayer {
    /**
     * 是否正在播放
     */
    fun isPlaying(): Boolean

    /**
     * 开播
     */
    fun startPlay(uri: String): Int

    fun startPlay(uri: String?, int: Int): Int

    /**
     * 播放RTMP加速流
     */
    fun startPlayRtmp(uri: String?): Int

    /**
     * 暂停
     */
    fun pause()

    /**
     * 重新开始拉流
     */
    fun resume()

    /**
     * 停止播放
     */
    fun stopPlay(isNeedClearLastImg: Boolean)

    /**
     * 释放
     */
    fun destroy()

    /**
     * 添加控制器
     */
    fun addController(controller: IPullPlayController)

    /**
     * 移除监听器
     * */
    fun clearController()

    /**
     * 设置播放器的属性，
     * @param enableAEC 默认不开启 是否开启回声消除，连麦的时候需要开启回声消除
     */
    fun setTXLivePlayConfig(enableAEC: Boolean)

    /**
     * 使用 Surface 模式用于本地渲染。
     */
    fun setSurface(surface: Surface)

    /**
     * 开启硬件加速
     * @param enable    boolean	true：启用视频硬解码， false：禁用视频硬解码。
     */
    fun enableHardwareDecode(enable: Boolean)

    /**
     * 设置是否静音
     */
    fun setMute(mute: Boolean)

    /**
     * 设置声音播放模式
     * 声音播放模式，可设置值：TXLiveConstants#AUDIO_ROUTE_SPEAKER、
     * 听筒：声音将从听筒播出。
     * 扬声器：声音将从扬声器播出。
     */
    fun setAudioRoute(audioRoute: Int)

    /**
     * 设置音量大小回调接口。
     * void onAudioVolumeEvaluationNotify(int volume)
     * volume	int	音量大小, 取值范围 [0，100]。
     */
    fun setAudioVolumeEvaluationListener(listener: TXLivePlayer.ITXAudioVolumeEvaluationListener)

    /**
     * 启用音量大小评估。
     * intervalMs 决定了 onAudioVolumeEvaluationNotify 回调的触发间隔，单位为ms，最小间隔为 100ms，如果小于等于 0 则会关闭回调，建议设置为 300ms。
     */
    fun enableAudioVolumeEvaluation(intervalMs: Int)

    /**
     * void onSnapshot(Bitmap bmp)
     * 	Bitmap	当前视频图片。
     */
    fun snapshot(listener: TXLivePlayer.ITXSnapshotListener)

    /**
     * setRenderMode
     * 设置播放渲染模式。
     * 图像渲染模式，可以设置值为：TXLiveConstants#RENDER_MODE_FULL_FILL_SCREEN、TXLiveConstants#RENDER_MODE_ADJUST_RESOLUTION。
     * 渲染模式有两种：
     * 平铺模式：视频画面将会按照比例铺满屏幕，多余部分会被裁减掉，此模式下不会有黑边。
     * 自适应模式：视频画面将等比例缩放，会居中显示，此模式可能会有黑边。
     */
    fun setRenderMode(mode: Int)
}